- Pod 是 Kubernetes 中最小的部署单元,但它不仅仅是容器的集合。Pod 是一组共享网络和存储空间的容器。这意味着 Pod 中的容器可以通过 localhost 相互通信,并且它们可以共享存储卷。Pod 通常被用来作为应用程序的部署单元。
- 控制器(Controller) 是 Kubernetes 中管理与控制 Pod 的核心概念之一。控制器确保在 Kubernetes 集群中以期望的状态创建和维护 Pod。其中,Deployment 用于声明式管理 Pod 资源,可以实现 Pod 的水平扩展、滚动更新以及回滚等功能,而 StatefulSet 用于有状态的应用程序,保证每个 Pod 的唯一性和固定的网络标识。其他控制器还包括 ReplicaSet 和 Job 等。
- Service 使得应用程序可以被其他应用程序或用户访问。它可以同时处理来自客户端的请求,并将请求负载均衡到一组具有相同标签的 Pod 中。Service 使用标签选择器(selector)来关联到一组 Pod,并使用 Endpoints 控制器自动发现这些 Pod。
在您的描述中,您提到了负载均衡策略,这确实是 Service 的一个关键功能之一。Service 还提供了其他功能,比如集群内部的服务发现、对外暴露服务等。
kubectl create 和 kubectl apply 都是用于在 Kubernetes 集群中创建资源的命令,它们有一些共同点,但也存在一些区别。
共同点:
- 创建资源:kubectl create 和 kubectl apply 都可用于创建新的 Kubernetes 资源,例如 Pod、Deployment、Service、ConfigMap 等。
- YAML 文件:两者都需要通过提供包含资源配置的 YAML 文件或者通过命令行标识来进行资源的创建。
区别:
- 创建方式:kubectl create 是用来创建全新的资源,如果资源已经存在,则会报错。而 kubectl apply 可以用来创建新资源,也可以用来更新已存在的资源。如果资源已经存在,kubectl apply 将根据新的配置更新现有资源。这使得 kubectl apply 更适合用来管理已存在的资源的变更和更新。
- 部署策略:kubectl apply 具有更丰富的部署策略,它支持类似于创建、更新和删除的行为。通过使用不同的策略标志,您可以决定应用如何处理资源。而 kubectl create 只支持创建新资源,不能用于资源的更新和删除。
因此,如果您要创建全新的资源或者资源配置已经不存在,可以使用 kubectl create;如果您要更新已存在的资源或者按照新的配置来更新资源,可以使用 kubectl apply。
gitlab+k8s
gitlab项目组构建一个runner(shell型),在宿主机完成打包镜像和执行k8s更换镜像命令(所以要求是k8smaster机器)。
gitlab设置好分支名字,提交时自动或者手动的执行流水线。执行的就是代码里面的.gitlab-ci.yml
gitlab-ci.yml主要包含逻辑:(deployment只能通过容器部署)
1,build:连接docker库,把代码通过代码中的dockerfile构建好镜像,传到docker库。
2,deploy:执行k8s命令,更换deplyment的images,pod自动重建。
一些gitlab构建的坑。
1,ssh密钥直接使用整个文件,不要cat 复制粘贴
2,转发端口使用socat。
3,socat和gitlab runner运行都需要&
要停止 Kubernetes 集群,你需要按照以下步骤操作:
-
优雅地停止所有 Pod:这将给 Pod 时间来清理资源和完成正在进行的任务。你可以使用以下命令来实现:
|
|
kubectl scale --all --replicas=0 deployments,statefulsets,replicasets,daemonsets |
-
停止 kubelet:kubelet 是在每个节点上运行的主要 Kubernetes 组件,负责和 API server 通信并管理 Pod 和容器。你可以使用以下命令来停止 kubelet:
|
|
sudo systemctl stop kubelet |
-
停止 Docker 或其他容器运行时:这将停止所有容器,包括那些由 kubelet 管理但还没有被停止的容器。你可以使用以下命令来停止 Docker:
|
|
sudo systemctl stop docker |
要恢复 Kubernetes 集群,你需要按照以下步骤操作:
-
启动 Docker 或其他容器运行时:这将允许你再次运行容器。你可以使用以下命令来启动 Docker:
|
|
sudo systemctl start docker |
-
启动 kubelet:这将重新启动 Kubernetes 的主要组件,并允许 Kubernetes 再次管理 Pod 和容器。你可以使用以下命令来启动 kubelet:
|
|
sudo systemctl start kubelet |
-
重新启动所有 Pod:这将重新启动你之前停止的所有 Pod。你可以使用以下命令来实现,将 N 替换为你原来的副本数:
|
|
kubectl scale --all --replicas=N deployments,statefulsets,replicasets,daemonsets |
请注意,这些命令需要在每个 Kubernetes 节点上执行,包括 master 和 worker 节点。如果你的集群有多个节点,你可能需要使用 SSH 或其他远程访问工具来访问这些节点。
在执行这些操作之前,请确保你了解这些命令的含义,并且知道如何在之后恢复你的集群。
「三年博客,如果觉得我的文章对您有用,请帮助本站成长」
共有 0 - k8s总结